/**
 * Copyright (c) 2010 Bob Brady (http://www.bradysoftware.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the 
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
 * express or implied. See the License for the specific language governing permissions and 
 * limitations under the License.
 */
package com.bradysoftware.rsscenturion;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;

import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;

public abstract class EntryBaseTag extends SimpleTagSupport {

	protected String feedId;
	protected Integer index;
	protected SyndEntry syndEntry;

	public EntryBaseTag() {
		super();
	}
	
	public abstract void printTag(JspWriter out) throws IOException;
	
	@Override
	public void doTag() throws JspException, IOException {
			populateSyndEntry();		
			if (syndEntry != null) {
				JspWriter out = getJspContext().getOut();
				printTag(out);
			}
		}
	
	public SyndEntry populateSyndEntry() {
		SyndFeed feed = (SyndFeed) getJspContext().getAttribute(feedId);

		if (feed != null) {
			int entryIndex;
			if(index != null) {
				entryIndex = index;
			} else {
				entryIndex = (Integer) getJspContext().getAttribute("index");	
			}
			
			if (entryIndex >= 0 && entryIndex <= feed.getEntries().size()) {
				syndEntry =  (SyndEntry) feed.getEntries().get(entryIndex);
				return syndEntry;
			}
			return null;
		}
		return null;
	}
	
	public void setFeedId(String feedId) {
		this.feedId = feedId;
	}

	public void setIndex(Integer index) {
		this.index = index;
	}
	
	public SyndEntry getSyndEntry() {
		return syndEntry;
	}

}